
package ve.org.src.util;

import java.util.LinkedHashMap;
import java.util.Map;

public class Semaforo {

    private static final Map<String, Integer> semaphore = new LinkedHashMap<String, Integer>();
    private static final int ESTADO_DISPONIBLE = 0;
    private static final int ESTADO_OCUPADO = 1;

    static{
        semaphore.put("coreDevuelto", ESTADO_DISPONIBLE);
    }

    public static boolean obtenerAcceso(String objeto) {
        if(semaphore.containsKey(objeto))
        {
            if(semaphore.get(objeto) == ESTADO_DISPONIBLE)
            {
                semaphore.remove(objeto);
                semaphore.put(objeto,ESTADO_OCUPADO);
                return true;
            }
            else
                return false;
        }
        return false;
    }

    public static void liberarAcceso(String objeto) {
        if(semaphore.containsKey(objeto))
        {
            if(semaphore.get(objeto) == ESTADO_OCUPADO)
            {
                semaphore.remove(objeto);
                semaphore.put(objeto, ESTADO_DISPONIBLE);
            }
        }
    }
}
